JCTF2014 RE200
下载后的文件PE头有问题,放入WinHex
DOS头的最后一个参数应该是指向PE头的位移,所以应该是E8,而PE头的起始位应该是50 45 00 00
修改以后保存,放入OD中,搜素字符串:
可以看到有个success应该就是成功的跳转
IDA打开
可以发现,要求输入9个数字,分别为v30-v38。 要求:
v31 * v32 * v30 / 11 ==106 (v31 ^ v30) == v32 - 4 (v32 + v31+ v30)%100 ==34 v33==80 v34==94 v35==98
|
但是只需要前面三个数进行一个运算,满足相关条件,中间三个数为80 94 98,最后三个数无关,然后打印出flag只取前面三个数
#include <stdio.h> int main( int argc, char *argv[] ) { for ( size_t i = 0; i < 0x100000; ++i ) { for ( size_t j = 0; j < 0x100000; ++j ) { size_t k = (i ^ j) + 4; if ( i * j * k / 0xb == 0x6a && (i + j + k) % 100 == 0x22 ) { printf( "%d %d %d\n", i, j, k ); // return 1; } } } return(0); }
|
15 6 13这一组是正确解
flag为
jlflag{15613abc}